
package com.jf.cloud.service.sysmanager.dao.impl;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.jf.cloud.service.sysmanager.common.base.BaseService;
import com.jf.cloud.service.sysmanager.common.db.BaseDao;
import com.jf.cloud.service.sysmanager.common.db.Query;
import com.jf.cloud.service.sysmanager.common.util.DateUtil;
import com.jf.cloud.service.sysmanager.dao.IPubgBaseTypeService;
import com.jf.cloud.service.sysmanager.entity.PubgBaseType;


/**
 * 基础配置服务实现
 * 
 * @author 绝峰代码机1.0 创建时间：2018-03-31
 */
@Service("pubgBaseTypeService")
public class PubgBaseTypeServiceImpl extends BaseService<PubgBaseType, Long> implements IPubgBaseTypeService {

	/**
	 * 日志
	 */
	private static Log log = LogFactory.getLog(PubgBaseTypeServiceImpl.class);

	/**
	 * JPA公共DAO
	 */
	@Resource
	private BaseDao baseDao;

	/**
	 * 新增基础配置
	 * 
	 * @author 朱建文 创建时间：2018年5月4日 下午8:35:39
	 */
	@Transactional
	public PubgBaseType savePubgBaseType(PubgBaseType pubgBaseType) throws Exception {
		try {
			return this.baseDao.saveAll(pubgBaseType);
		} catch (Exception e) {
			throw new Exception("新增基础配置出错！", e);
		}
	}
	
	/**
	 * 修改基础配置
	 * 
	 * @author 朱建文 创建时间：2018年5月4日 下午8:35:39
	 */
	@Transactional
	public void updatePubgBaseType(PubgBaseType pubgBaseType) throws Exception {
		try {
			StringBuffer sql = new StringBuffer();
			sql.append(" UPDATE ");
			sql.append("   pubg_base_type ");
			sql.append(" SET ");
			sql.append("   TYPE_NAME = ?, OPEN_FLAG = ?, OPT_ID = ?, OPT_ACCOUNT = ?, OPT_TIME = ? ");
			sql.append(" WHERE ");
			sql.append("   ROW_ID = ? ");
			this.baseDao.safeUpdate(sql.toString(), 1, 
					pubgBaseType.getTypeName(), pubgBaseType.getOpenFlag(), pubgBaseType.getOptId(), 
					pubgBaseType.getOptAccount(), DateUtil.getCurrentDateTime(), pubgBaseType.getRowId());
		} catch (Exception e) {
			throw new Exception("修改基础配置出错！", e);
		}
	}
	
	/**
	 * 修改基础配置的开启状态
	 * 
	 * @author 朱建文 创建时间：2018年5月4日 下午8:35:39
	 */
	@Transactional
	public void updatePubgBaseTypeOpenFlag(PubgBaseType pubgBaseType) throws Exception {
		try {
			StringBuffer sql = new StringBuffer();
			sql.append(" UPDATE ");
			sql.append("   pubg_base_type ");
			sql.append(" SET ");
			sql.append("   OPEN_FLAG = ?, OPT_ID = ?, OPT_ACCOUNT = ?, OPT_TIME = ? ");
			sql.append(" WHERE ");
			sql.append("   ROW_ID = ? ");
			this.baseDao.safeUpdate(sql.toString(), 1, pubgBaseType.getOpenFlag(), pubgBaseType.getOptId(), 
					pubgBaseType.getOptAccount(), DateUtil.getCurrentDateTime(), pubgBaseType.getRowId());
		} catch (Exception e) {
			throw new Exception("修改基础配置的开启状态出错！", e);
		}
	}
	
	/**
	 * 删除基础配置
	 * 
	 * @author 朱建文 创建时间：2018年5月4日 下午8:35:39
	 */
	@Transactional
	public void deletePubgBaseType(PubgBaseType pubgBaseType) throws Exception {
		try {
			StringBuffer sql = new StringBuffer();
			sql.append(" UPDATE ");
			sql.append("   pubg_base_type ");
			sql.append(" SET ");
			sql.append("   DEL_FLAG = ?, OPT_ID = ?, OPT_ACCOUNT = ?, OPT_TIME = ? ");
			sql.append(" WHERE ");
			sql.append("   ROW_ID = ? ");
			this.baseDao.safeUpdate(sql.toString(), 1, pubgBaseType.getDelFlag(), pubgBaseType.getOptId(), 
					pubgBaseType.getOptAccount(), DateUtil.getCurrentDateTime(), pubgBaseType.getRowId());
		} catch (Exception e) {
			throw new Exception("删除基础配置出错！", e);
		}
	}

	/**
	 * 获取下拉框数据
	 * 
	 * @author 朱建文 创建时间：2018年4月3日 下午8:35:39
	 */
	public List<Map<String, Object>> selectDataMaps(String value, String label, Query query) {
		List<Map<String, Object>> datalList = new ArrayList<Map<String,Object>>();
		try {
			String sql = "SELECT " + value + " value, " + label + " label FROM pubg_base_type ";
			sql = query.getSQL(sql);
			datalList = this.baseDao.findMapList(sql, query.getParamList().toArray());
		} catch (DataAccessException e) {
			log.error("获取下拉框数据出错！", e);
		}
		return datalList;
	}
}
